Die Kamera

Allgemein:

Die Kamera ist eine Pixy CmuCam5. Eine CmuCam ist eine Kamera welche direkt durch einen Prozessor ausgewertet wird. Zuerst werden Signaturen einprogrammiert. Diese haben einen speziellen Farbcode nachdem dann im live Bild der Kamera gesucht wird mit einem Blob Detektions Programm. Die Informationen gibt der Prozessor einem Mikrocontroller oder einem weiteren Prozessor weiter. Dies erfolgt bei unserer Kamera über den SPI-Bus. Die CmuCam gibt folgende Informationen weiter: Anzahl der Signaturen, ID der Signaturen, X/Y Position, Höhe/Breite und bei einer zweifarbigen Signatur einen Winkel.

Technische Daten:

Name: Pixy CmuCam5

Hersteller: Charmed Labs

Auflösung: 640x400

FPS: 50

Busse: SPI, I2C, UART, USB, analog/digital

Prozessor: NXP LPC4330, 204 MHz, dual core

Bild-Sensor: Omnivision OV9715, 1/4", 1280x800

FOV: 75° horizontal, 47° vertikal

Linse: standard M12 Linse

Strom Verbrauch: ca. 140mA bei 5v

Strom Eingang: Usb(5V), unreguliert(6-10V)

RAM: 264K bytes

Flash: 1M byte

Gewicht: 27 Gramm

Größe: 2.1" x 2.0" x 1.4''

Der SPI-Bus:

Da wir zum ersten mal den SPI Bus benutzt haben, hatten wir einige Schwierigkeiten. Da wir den Teensy 3.1/3.2 als Mikrocontroller benutzen, haben wir einen Takt von 96mhz. Der SPI benutzt ein Bruchteil dieses Taktes. Standardmäßig waren es 1/16, was jedoch zur folge hatte, dass wir dauerhaft Übertragungs-Fehler hatten, da keine Abschirmung für das Kabel vorlag und die 14.8Volt für die Motoren auch auf der Platine verteilt wurden. Also haben wir 1/32 des Mikrocontroller Taktes verwendet und konnten die Übertragungs-Fehler minimieren. Außerdem fragen wir nur alle 20ms nach neuen Informationen, da die verwendete Kamera 50 Bilder pro Sekunde auswerten kann.

Die Programmierung:

Um die Kamera zu programmieren benutzen wir die PixyMon Software. Hier kann man aus dem Livebild der Kamera die Farben auswählen und als Signaturen abspeichern. Danach wird das Bild sofort nach den neuen Signaturen ausgewertet. Ein riesen Problem waren hier die Funktionen des automatischen Weißabgleiches und die automatische Helligkeit. Denn wenn der Weißabgleich sich während eines Spieles ändert, ändern sich die Farben der Gegenstände für die Kamera minimal. Die Signaturen bleiben jedoch genau wie vorher. Also kann es passieren, dass auf einmal die Kamera keine Blobs mehr findet, da die Farben des Bildes sich etwas geändert haben. Um dieses Problem zu umgehen, haben wir am Anfang einmal ein Weißabgleich gemacht und den automatischen abgestellt. Ähnliche, aber nicht so gravierende Probleme liefert auch die automatische Helligkeit, welche wir auch einmal eingestellt haben und danach deaktiviert. Die Profile mit den Signaturen haben wir abgespeichert, sodass wir nur einmal die Prozedur durchlaufen müssen, für zwei Roboter.

Einstatz Gebiete:

Benutzt haben wir die Kamera um die Tore zu erkennen und um den ungefähren Abstand auszurechnen. So konnten wir durch die Höhe des gesehenen Blobs sagen ob wir direkt vor dem Tor stehen, in der Nähe sind, weit entfernt sind und ob wir ganz weit entfernt sind. Durch diese vier Zonen haben wir die Möglichkeit gehabt den Ball erst dann zu schießen, wenn wir erstens ins Tor zielen, was wir durch die X Position des Blobs feststellen konnten, und ob wir nah genug dran sind um das Tor zu erreichen. Da sobald ein gegnerischer Roboter das Tor verdeckt hat die Kamera kein Tor mehr sieht konnten wir an den Robotern vorbei schießen. Wenn ein Roboter genau mittig stand wurde uns nur der größere Blob gesendet, da die Chance zu treffen dort natürlich höher ist.

Tatsächlicher Nutzen:

Da wir nicht wie viele andere Teams einfach nur gerade aus gefahren sind, waren wir scheinbar defensiver. Jedoch sobald sich eine Chance ergab, da das Tor frei war und der Roboter im Besitz vom Ball, konnten wir zu 70-80% ein Tor schießen. Dadurch hatten wir weniger Tor Schüsse hatten aber dafür eine höhere Treffer Quote.

Probleme:

Außer den zuvor genannten Probleme mit dem SPI-Bus, dem automatischen Weißabgleich und der automatischen Helligkeit, gab es auch noch weitere Probleme, besonders im Qualifikations-Turnier in St. Augustin. Dort war das Schwarz der Bande sehr hell und das Blau des Tores sehr dunkel. Unsere Kamera konnte auch aufgrund der extrem schlechten Ausleuchtung des Spielfeldes nicht mehr zwischen Bande und Tor unterscheiden. Daraufhin mussten wir einen Scheinwerfer in Richtung der Kamera am Roboter anbringen, sodass das Blau des Tores etwas besser erkennbar wurde. Zudem haben wir unsere Entscheidung zu schießen nicht nur von der Kamera abhängig gemacht und sind einfach nach dem Kompass gefahren, sobald wir kein Tor mehr gesehen haben. Diese Probleme hatten wir in Magdeburg auf der Deutschen Meisterschaft nicht, da alles extrem gut ausgeleuchtet war und die Farben sehr knallig waren.

Zusammenfassung:

Generell kann man sagen, dass die Kamera uns einen großen Vorteil gegenüber anderen Teams erbracht hat. Da die Probleme sich frühzeitig abzeichneten und die Ausfälle während der Spiele sich in Grenzen gehalten haben, war der Einsatz der Pixy CmuCam5 eine sehr gute Entscheidung.